Events Listeners
Transaction Result Recovery over CLOUD connection
CloudTransactionResultRecovery Method
The terminal has a transaction recovery loop to automatically send back the pending Transaction Result to the point of sale in case it becomes unreachable (network issue or other). For the first 100 seconds after a transaction is completed, a background thread will attempt to deliver the result every 5 seconds. If the point of sale is still unreachable after the first 100 seconds, the retry loop turns into an exponential increment to the power of 2 (8s-16s-32s etc…). The recovery loop is reinitialized every time the Handpoint application is restarted.The Transaction Result received through the transaction recovery loop will have the recoveredTransaction field set to true.
Important information: The point of sale must be successfully connected to a terminal in order to receive the pending transactions.
Returns:
Transaction Result Ready Event
Event containing the pending Transaction Result.
Device discovery finished
deviceDiscoveryFinished
The deviceDiscoveryFinished event gets called when the payment terminal search has finished, it returns a list of devices.
Parameters
| Parameter | Notes | 
|---|---|
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
//Receiving a list of connectable devices
List<Device> myListOfDevices = new List<Device>();
public void deviceDiscoveryFinished(List<Device> devices)
{
    foreach(Device device in devices)
    {
        myListOfDevices.Add(device);
    }
}
Signature required
SignatureRequired Method
The SignatureRequired event gets called when the card issuer requires a signature. This event is only required for an Hilite integration, PAX and Telpo terminals automatically prompt for signature capture on the payment terminal.
Parameters
| Parameter | Notes | 
|---|---|
request RequiredSignatureRequest  | Holds the signature request object. | 
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
//Receiving a SignatureRequest from the SDK.
public void SignatureRequired(SignatureRequest signatureRequest, Device device)
{
    //You might want to print out the receipt or ask the customer to sign the receipt on your device
    DisplayReceiptInUI(signatureRequest.MerchantReceipt)
    //If you accept the signature
    api.SignatureResult(true);
}
End of transaction
EndOfTransaction Method
The EndOfTransaction event gets called at the end of each transaction and has two parameters, result and device.
Parameters
| Parameter | Notes | 
|---|---|
result RequiredTransactionResult  | Holds the result and receipts for the transaction. | 
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
//Receiving a TransactionResult from the SDK.
public void EndOfTransaction(TransactionResult transactionResult, Device device)
{
    //You might want to display this information in the UI
    postTransactionResultToUI(transactionResult);
}
Connection status changed
ConnectionStatusChanged
The ConnectionStatusChanged event gets called when the state of a payment terminal connection changes.
Parameters
| Parameter | Notes | 
|---|---|
status RequiredConnectionStatus  | An enum containing the status code for the connection. | 
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
//Receiving a new ConnectionStatus from the SDK
public void ConnectionStatusChanged(ConnectionStatus connectionStatus, Device device)
{
    //You might want to display this information in the UI
    postNewStatusToUI(connectionStatus);
}
Current transaction status
CurrentTransactionStatus Method
The currentTransactionStatus event gets called when the state of an ongoing transaction changes.
Parameters
| Parameter | Notes | 
|---|---|
statusInfo RequiredStatusInfo  | An object containing information about the current transaction. | 
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
//Receiving a transaction status from the SDK.
public void currentTransactionStatus(StatusInfo statusInfo, Device device)
{
    //You might want to display some of this information in the UI
    DisplayTransactionStatusInUI(statusInfo)
}
Message logged
OnMessageLogged Method
The OnMessageLogged event gets called for each and every message logged by the SDK. This function is only intended for debugging.
Parameters
| Parameter | Notes | 
|---|---|
logLevel RequiredLogLevel  | An enum containing the log level. | 
message RequiredString  | A String containing the current log message. | 
Code example
//Receiving a log from the SDK
public void OnMessageLogged(LogLevel logLevel, String message)
{
    //You do not want to display this information in the UI
    Debug.WriteLine(message);
}
Device Logs ready
DeviceLogsReady Method
The DeviceLogsReady event gets called when the payment terminal logs are ready to be delivered (in response to a request to getDeviceLogs()). This Event is useful if case of a communication error between the payment terminal and the API (e.g : Bluetooth communication lost). After reconnecting, you can then fetch the card reader logs to the API.
Parameters
| Parameter | Notes | 
|---|---|
logs RequiredString  | String containing the current log. | 
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
//Receiving a log from the device
public void DeviceLogsReady(string logs, Device device)
{
    //You might want to save this information
    WriteLogsToDisk(logs);
}
Pending transaction result
PendingTransactionResult Method
In case of a communication failure between the payment terminal and your application a TransactionResult might have not been delivered to the SDK. This event is invoked when the device has a pending TransactionResult. This event might be invoked when reconnecting to a device after a communication failure during a transaction. This event will not be called if HapiManager.Settings.AutoRecoverTransactionResult is set to true.
Parameters
| Parameter | Notes | 
|---|---|
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
@Override
public void PendingTransactionResult(Device device){
    //Here you might want to call api.GetPendingTransaction(); to receive the TransactionResult
}
Transaction result ready
TransactionResultReady Method
In case of a communication failure between the device and your application a TransactionResult might have not been delivered to the SDK. This event will be invoked after using hapi.GetPendingTransaction();. When there is no pending transaction the TransactionResult will contain default/error fields and no receipts. This event is called if HapiManager.Settings.AutoRecoverTransactionResult is set to true.
Parameters
| Parameter | Notes | 
|---|---|
result RequiredTransactionResult  | Holds the results for the transaction. | 
device RequiredDevice  | The payment terminal invoking the event. | 
Code example
@Override
public void TransactionResultReady(TransactionResult transactionResult, Device device){
    //Here you might want to do stuff to the transactionResult
}